package com.qingcloud.adminbackend.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qingcloud.adminbackend.entity.sysstation.StationPx;
import com.qingcloud.adminbackend.entity.sysstationmo.AddStationMo;
import com.qingcloud.adminbackend.entity.sysstationmo.StationMoDTO;
import com.qingcloud.adminbackend.entity.sysstationmo.StationMoVO;
import com.qingcloud.adminbackend.entity.sysstationmo.SysStationMo;
import org.apache.ibatis.annotations.Param;

import java.math.BigInteger;
import java.util.List;

/**
 * <p>
 * 监测点监测对象 Mapper 接口
 * </p>
 *
 * @author luozehua
 * @since 2019-04-16
 */
public interface SysStationMoMapper extends BaseMapper<SysStationMo> {

    SysStationMo findIdByCapation(@Param("capation") String capation, @Param("parentId") String parentId, @Param("domainId") String domainId);

    Long findMaxBuildId();

    Long findMaxFloorId(@Param("parentId") String parentId);

    Long findMaxRoomId(@Param("parentId") String parentId);

    BigInteger findMaxMoId(@Param("parentId") String parentId);

    List<SysStationMo> findAllChild(@Param("id") String id);

    Integer findSub(@Param("parentId") String parentId, @Param("capation") String capation, @Param("domainId") String domainId);

    /**
     * 获取所有楼宇的名称
     *
     * @return
     */
    List<StationMoDTO> getAllBuildNames(@Param("addressId") String addressId);

    /**
     * 根据楼宇名称查询下面所有的楼层
     *
     * @param buildName
     * @return
     */
    List<StationMoDTO> getAllFloorNames(@Param("buildName") String buildName, @Param("domainId") String domainId);

    /**
     * 根据所有楼层名称查询房间
     *
     * @param floorName
     * @return
     */
    List<StationMoDTO> getAllRoomNames(@Param("floorName") String floorName, @Param("domainId") String domainId);

    List<StationMoDTO> getStreetNames(@Param("domainId") String domainId);

    String getRoadId(@Param("streetName") String streetName, @Param("domainId") String domainId);

    List<SysStationMo> getStationMoFather();

    List<SysStationMo> getStationMoBelong();

    List<SysStationMo> getStationMoType();

    Integer addStationMo(@Param("stationMo") AddStationMo stationMo);

    Integer addStationAttr(@Param("moId") String moId, @Param("attrValue") String attrValue, @Param("attrValueEn") String attrValueEn);

    Integer deleteStationMo(@Param("moId") String moId);

    List<SysStationMo> getStationMo(@Param("moId") String moId);

    List<SysStationMo> findBindStation(@Param("moIds") List moIds);

    List<StationPx> findStationPx(@Param("moIds") List moIds);

    StationMoVO getStationMoInfo(@Param("moId") String moId);

    String getAddressId(@Param("moId") String moId);

    StationMoVO getAddressInfo(@Param("moId") String moId);

    /**
     * 删除mo属性
     */
    void deleteStationMoAttr(@Param("moId") String moId);

    /**
     * 删除mo文字
     */
    void deleteStationMoArticle(@Param("moId") String moId);

}
